Linux之redis

#1.编译安装redistar zxf redis-5.0.3.tar.gzyum install -y gcccd /root/redis-5.0.3make ##这里不用configuremake installcd /root/redis-5.0.3/utils./install_server.sh ##安装redis,安装完会自动启动netstat -tnlp ##可以看到...
摘要由CSDN通过智能技术生成

可以参考redis中文官网
http://www.redis.cn
http://www.redis.cn/documentation.html

1.编译安装redis
[root@server1 ~]# tar zxf redis-5.0.3.tar.gz
[root@server1 ~]# yum install -y gcc
[root@server1 ~]# cd /root/redis-5.0.3
[root@server1 redis-5.0.3]# make	##这里不用configure
[root@server1 redis-5.0.3]# make install
[root@server1 redis-5.0.3]# cd /root/redis-5.0.3/utils
[root@server1 utils]# ./install_server.sh	##安装redis, 全部选默认,安装完会自动启动  
[root@server1 utils]# netstat -tnlp	##可以看到redis默认是开启127.0.0.1的6379端口,这样只能本地访问,需要配置所有接口都能访问
[root@server1 utils]# vim /etc/redis/6379.conf	##修改端口
  70 bind 0.0.0.0

[root@server1 utils]# /etc/init.d/redis_6379 restart	##重启服务,也可以用systemctl restart redis_6379,但是重启好像不生效,可以开启服务
[root@server1 utils]# redis-cli   #使用
2.主从复制
[root@server1 ~]# scp -r redis-5.0.3 root@172.25.0.2:     # 把redis拷贝到server2上
[root@server2 redis-5.0.3]# make install    #在server2上安装
[root@server2 redis-5.0.3]# cd utils/
[root@server2 utils]# ./install_server.sh	      #全部选默认
[root@server2 utils]# vim /etc/redis/6379.conf
bind 0.0.0.0      #修改默认端口
[root@server2 ~]# /etc/init.d/redis_6379 restart

##配置主从:在server2上配置从

[root@server2 ~]# vim /etc/redis/6379.conf
replicaof    172.25.0.1 6379		 
/etc/init.d/redis_6379 restart
测试

在server1上:

[root@server1 ~]# redis-cli 
127.0.0.1:6379> set name wsp
OK
127.0.0.1:6379> get name
"wsp"

在server2上:

[root@server2 ~]# redis-cli 
127.0.0.1:6379> get name
"wsp"

注意:在server1上存入的值,在server2上可以看到,但是在server2上不能写入

[root@server2 ~]# redis-cli 
127.0.0.1:6379> get name
"wsp"
127.0.0.1:6379> set name westos
(error) READONLY You can't write against a read only replica.

#redis的数据保存在/var/lib/redis/6379/dump.rdb
如果有问题,redis起不来,可以删除这文件再试

#vim /etc/redis/6379.conf
219 save 900 1 ##这几行表示,有一个键值发生变化时,会过900s更新,下面依次类推,因为不停更新会耗费资源
220 save 300 10
221 save 60 10000
分别表示900秒(15分钟)内有1个更改,300秒(5分钟)内有10个更改以及60秒内有10000个更改
先看60秒,如果有10000个更改,那就save了吧。
如果没有,那么等到300秒,看是否有10个更改,有就save了吧。
同理900秒。。。

配置redis高可用

#再开一台server3,配置redis

[root@server1 ~]# scp -r redis-5.0.3 root@172.25.0.3:
[root@server3 redis-5.0.3]# make install
[root@server3 utils]# ./install_server.sh    
[root@server3 redis]# vim 6379.conf
  70 bind 0.0.0.0
  89 protected-mode no
 287 replicaof 172.25.0.1 6379	 

[root@server3 redis]# /etc/init.d/redis_6379 restart

##配置哨兵
在server1上(master)编辑配置文件

[root@server1 redis-5.0.3]# cp sentinel.conf /etc/redis/	##复制配置文件,sentinel哨兵
[root@server1 ~]# vim /etc/redis/sentinel.conf
 17 protected-mode no	##关闭保护模式
121 sentinel monitor mymaster 172.25.0.1 6379 2	##配置master信息,后面的2表示投票机制,至少有2个节点认为master挂了,才会切换
146 sentinel down-after-milliseconds mymaster 10000	##改为10s,表示master挂后10s会切换

注意注意:一定要先把修改好的sentinel.conf文件scp到slave节点上再进行下面这一步启动

[root@server1 redis]# scp sentinel.conf server2:/etc/redis/
[root@server1 redis]# scp sentinel.conf server3:/etc/redis
[root@server1 ~]# redis-server /etc/redis/sentinel.conf --sentinel	##开启哨兵

#在server2和server3上同样要开启

[root@server2 ~]# redis-server /etc/redis/sentinel.conf --sentinel
[root@server3 ~]# redis-server /etc/redis/sentinel.conf --sentinel

#在server1上查看信息,看到以下信息说明配置成功

[root@server1 ~]# redis-cli 
127.0.0.1:6379> info

#Replication
role:master
connected_slaves:2
slave0:ip=172.25.0.2,port=6379,state=online,offset=95268,lag=0
slave1:ip=172.25.0.3,port=6379,state=online,offset=95133,lag=0

#在server1上可以看到sentinel信息

[root@server1 ~]# redis-cli -p 26379
127.0.0.1:26379> info

#Sentinel
sentinel_masters:1
sentinel_tilt:0
sentinel_running_scripts:0
sentinel_scripts_queue_length:0
sentinel_simulate_failure_flags:0
master0:name=mymaster,status=ok,address=172.25.0.1:6379,slaves=2,sentinels=3

#挂掉server1的redis

[root@server1 ~]# redis-cli 
127.0.0.1:6379> SHUTDOWN
not connected> 

可以看到server1的6379端口挂掉
sentinel哨兵也能看到信息,现在server2是master

1036:X 31 Mar 2019 17:49:21.927 # +odown master mymaster 172.25.0.1 6379 #quorum 3/2
1036:X 31 Mar 2019 17:49:22.546 # +switch-master mymaster 172.25.0.1 6379 172.25.0.2 6379

现在启动server1

[root@server1 redis-5.0.3]# vim /etc/redis/6379.conf 
 287 replicaof 172.25.0.1 6379	 
[root@server1 redis-5.0.3]# /etc/init.d/redis_6379 restart

#启动之后会看到两个WARNING
在server1上修改此参数的值:#此值表示内核允许分配所有的物理内存,而不管当前的内存状态如何,0表示内核将检查是否有足够的可用内存供应用进程使用;如果有足够的可用内存,内存申请允许;否则,内存申请失败,并把错误返回给应用进程

[root@server1 ~]# sysctl -w vm.overcommit_memory=1
或者
[root@server1 ~]# cd /proc/sys
[root@server1 sys]# ls
abi  crypto  debug  dev  fs  kernel  net  vm
[root@server1 sys]# cd vm
[root@server1 vm]# echo 1 > overcommit_memory 
redis集群

http://www.redis.cn/topics/cluster-tutorial.html ##配置复制官网的

#先关闭之前的redis

[root@server1 ~]# /etc/init.d/redis_6379 stop

#新建redis目录

[root@server1 ~]# mkdir /usr/local/rediscluster
[root@server1 rediscluster]# mkdir 700{1..6}

#编辑配置文件

[root@server1 7001]# vim redis.conf 
port 7000
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes
pidfile "/usr/local/rediscluster/7001/redis.pid"
logfile "/usr/local/rediscluster/7001/redis.log"
daemonize yes
dir "/usr/local/rediscluster/7001"

#启动

[root@server1 7001]# redis-server redis.conf
 ps ax
 1332 ?        Ssl    0:00 redis-server *:7000 [cluster]
测试
[root@server1 7001]# redis-cli -p 7001
127.0.0.1:7001> info

#Cluster
cluster_enabled:1	##集群激活

#同理配置7002~7006,并启动

 ps ax

 1348 ?        Ssl    0:00 redis-server *:7001 [cluster]
 1382 ?        Ssl    0:00 redis-server *:7002 [cluster]
 1388 ?        Ssl    0:00 redis-server *:7003 [cluster]
 1394 ?        Ssl    0:00
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值